查看原文
其他

“丧心病狂”的混淆操作!

鸿洋 鸿洋 2019-04-05

我们一般发布项目出去都去做混淆的操作,一方面优化一下代码,减少一下Apk体积;另一方面,让自己的源码逻辑不会那么容易被识别出来。


刚巧在wanandroid群里,看到有同学讨论空白混淆的操作,于是搜集了一波比较好玩的混淆词典。


原理很简单,我们混淆是可以配置词典的,所以就当是图个乐了。


我特意找了个开源项目,加一下混淆配置,顺便确定下还能运行...


https://github.com/kingwang666/GetApk


网络不好的不如新建个项目体验,对网络自信的,记得删除这个项目里面的一些代理配置,在gradle.properties中。


1效果


先看一个还算正常的:



用了Java里面的关键词作为词典,这反编译之后,要是看到for,while就条件反射,可能会懵逼吧。


还有用中文来做词典的:



不过这里面的字我好想一个不认识,真是尴尬...


还有通过各种字符很容易造成视觉混乱的字符的:


比如这个:



还有这个:



最后这个就比较“sangxinbingkuang”了:



反编译使用的是jadx

http://www.wanandroid.com/blog/show/2034


2操作


开启混淆配置


buildTypes {
    debug {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}


为了方便,你可以直接开启debug的混淆,然后就可以直接点击run打包和安装了。


可以看到上面配置了混淆文件包含:`proguard-rules.pro`


和moudule的build.gradle在同一目录,在里面可以添加你的词典配置:



强烈建议,开启混淆后,配置词典前,先打个包运行一下确定可以正常运行。


最后上面的混淆词典,分别来自不同的开源项目:


https://github.com/RockyQu/ProguardDictionary


包含使用Java关键词的词典。


https://github.com/o2e/ProguardDictionaryGenerator


包含最后那个全是非常神奇的字符的。


https://github.com/WrBug/FrenziedProguard


包含1il,中文,0oO的。


放一个混淆后的apk地址,如果实在懒得run又想看看效果:

http://wanandroid.com/blogimgs/57ed3c61-08ee-4a3f-b859-f3cd1d748437.apk


好了,尽情的玩耍吧~


推荐阅读

“阿里为大家学习Flutter操碎了心”

这交互炸了系列 第十二式之年年有鱼


扫一扫 关注我的公众号

如果你想要跟大家分享你的文章,欢迎投稿~


┏(^0^)┛明天见!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存